const app = getApp();

import { HiddenCall } from '../../request/api'
const request = new HiddenCall
import { loginHttp, getToken, wxloginHttp, loginCode, qyLogin } from "../../utils/http.js"
import { throttle } from '../../utils/throttle.js'
import form_submit from '../../mixins/form_submit.js'
Page({
  /**
   *  登录
   * - @author          狄兆璐
   * - @date             2018-07-03
   * uuid                   获取手机验证码使用
   * token                 用户认证
   * countDown       显示隐藏验证码时间
   * codetext           按钮文本
   * accountType     账号状态
   * passwordType  码状态
   */
  mixins: [form_submit],
  data: {
    uuid: app.globalData.uuid,
    countDown: false,
    codetext: '获取验证码',
    canIUse: wx.canIUse('button.open-type.getUserInfo'),
    checkbox: false,
    isIcon: false,
    btnLoading: false,
    accountType: false,
    passwordType: false
  },
  onLoad: function (options) {
    let that = this
    // 调用微信登录api
    try {
      qyLogin().then((res) => {
      })
    }
    catch (error) {
      loginCode().then((res) => {
        // 获取相关认证属性
        getToken({"wxCode": res.code}).then(res => {
          // 获取相关认证属性
          if (res.statusCode === 200) {
            app.globalData.uuid = res.result.openId
            app.globalData.Authorization = res.result.token
            // 登录成功
            this.firstLogIn(false)
            // 获取类型
            this.getFollowUp()
          }
        })
      })
    }
    wx.getStorage({
      key: 'key',
      success(res) {
        that.setData({
          btnCode: res.data.btnCode ? res.data.btnCode:'',
          phonenumber: res.data.phonenumber ? res.data.phonenumber : '',
          checkbox: res.data.checkbox
        })
      }
    })
  },
  /**
   * 用户授权登录
   */
  bindgetphonenumber: function (e) {
    wx.login({
      timeout: 6000,
      success: res => {
        let data = {
          encryptedData: e.detail.encryptedData,
          iv: e.detail.iv,
          message: e.detail.errMsg,
          wxCode: res.code
        }
        // 登录接口调用
        wxloginHttp(data).then(res => {
          // app.saveFormIds()
          if (res.statusCode === 200) {
            // 获取token
            app.globalData.Authorization = res.result.token
            app.globalData.isTariff = true
            // 根据数据进入相应页面首页或跟进页
            this.firstLogIn(app.globalData.isTariff)
          }
          // 登录成功友好提示
          res.message === 'OK' ? '' : wx.showToast({ title: res.message, icon: 'none' })
          return request.sendToken()
        }).then(() => {})
      }
    })
  },
  /**
   * 验证数组
   * author dzl
   */
  isArray(o) {
    return Object.prototype.toString.call(o) == '[object Array]';
  },
  /**
   * 账号显示隐藏
   * author wl
   */
  isShowText() {
    // input 聚焦添加边框样式
    this.setData({ user: true })
  },
  /**
   * 失焦取消边框样式
   * author wl
   */
  isHideText(e) {
    e.detail.value === "" ? this.setData({ user: false }) : ""
  },
  /**
   * 显示密码
   * author wl
   */
  isShowPass() {
    this.setData({ userCode: true })
  },
  /**
   * 隐藏密码
   * author wl
   */
  isHidePass(e) {
    e.detail.value === "" ? this.setData({ userCode: false }) : ""
  },
  /**
   * 提交表单数据进行登录
   * author wl
   */
  login: function (e) {
    if (this.data.phonenumber.length < 6 || !this.data.btnCode) return
    // 如果手机号为空或验证码为空提示
    app.globalData.phonenumber = this.data.phonenumber
      // 登录接口调用
    this.setData({ btnLoading: true})
      loginHttp({
        password: this.data.phonenumber,
        workPhone: this.data.btnCode
      }, app.globalData.uuid)
      .then(res => {
        // 获取token
        app.globalData.Authorization = res.result ? res.result.token: ''
        if (res.statusCode === 200) {
          // 是否保存用户名和密码
          this.saveUser()
          // 登录成功
          this.firstLogIn(res.result.firstLogIn)
          // 获取类型
          this.getFollowUp()
          // 资费页面布尔
          app.globalData.isTariff = true
          app.globalData.accountNumber = this.data.btnCode
          // 清除已有账号密码错误状态
          this.setData({ accountType: false, passwordType: false})
          // request.sendToken().then(() => {})
        } else {
          // 账号 密码状态
          this.accountError(res.statusCode)
          this.passwordError(res.statusCode)
          // 登录按钮状态
          this.setData({ btnLoading: false })
        }
        // 登录成功友好提示
        res.message === 'OK' ? '':wx.showToast({ title: res.message, icon: 'none' })
      })
      .catch((err)=>{
        //网络超时关闭按钮登陆状态
        this.setData({ btnLoading: false })
      })
  },
  /**
   * 获取用户输入的账号
   * author wl
   * date 2018-11-14
   */
  getAccount(e) {
    this.setData({ btnCode: e.detail.value })
  },
  /**
   * 获取用户输入的手机号
   * author wl
   * date 2018-11-14
   */
  getPhoneNumber(e) {
    this.setData({ phonenumber: e.detail.value })
  },
  /**
   * 记住用户名和密码
   */
  checkboxChange (e) {
    this.setData({ checkbox: !this.data.checkbox })
  },
  /*
  * 显示密码
  */
  showPassword () {
    this.setData({ isIcon: !this.data.isIcon})
  },
  /*
  * 忘记密码
  */
  updatePassword () {
    wx.navigateTo({
      url: '../forget_password/index',
    })
  },
  onShareAppMessage: function (ops) {
    return {
      title: "千家电话",
      path: "/pages/login/index"
    }
  },
  /**
   * 获取跟进数据
   */
  getFollowUp () {
    request.getFollowUpType().then((res) => {
      app.globalData.followUpType = res
      return request.getUserInfo()
    }).then(res => {
      app.globalData.telephone = res.telephone
    })
  },
  /**
   * 清除账号
   * @author wl
   * @date 2019-3-11
   */
  clearAccount () {
    this.setData({ btnCode: '' })
  },
  /**
   * 账号错误
   * @author wl
   * @date 2019-3-11
   */
  accountError (statusCode) {
    if (statusCode === 415) {
      this.setData({ accountType: true, passwordType: false})
    }
  },
  /**
   * 账号错误
   * @author wl
   * @date 2019-3-11
   */
  passwordError (statusCode) {
    if (statusCode === 418) {
      this.setData({ passwordType: true, accountType: false })
    }
  },
   /**
   * 聚焦去除提示
   * @author wl
   * @date 2019-3-13
   */
  passwordFocus () {
    this.setData({passwordType: false})
  },
  /**
   * 聚焦去除提示
   * @author wl
   * @date 2019-3-13
   */
  accountFocus () {
    this.setData({accountType: false})
  },
  /**
   * 保存用户名密码
   * @author wl
   * @date 2019-3-11
   */
  saveUser () {
    // 是否选中记住密码
    if (this.data.checkbox) {
      // 存储账号密码
      wx.setStorage({
        key: 'key',
        data: {
          phonenumber: this.data.phonenumber,
          btnCode: this.data.btnCode,
          checkbox: this.data.checkbox
        }
      })
    } else {
      // 如果第一次记住的话，第二次登录不勾选的话清空
      wx.setStorage({
        key: 'key',
        data: {
          phonenumber: '',
          btnCode: '',
          checkbox: false
        }
      })
    }
  },
  /**
   * 检测是否第一次登录
   * @author wl
   * @date 2019-3-26
   */
  firstLogIn(firstLogIn) {
    if (!firstLogIn) {
      // 如果是第一次登录则进入资费页面
      if (app.globalData.isTariff) wx.redirectTo({ url: '../tariff/index' })
      else wx.switchTab({ url: '../index/index' })
    } else {
      wx.reLaunch({ url: '../modfiy_password/index?login=login' })
    }
  }
})